package 树;

/**
 * @author ssh
 * @date 2025/8/24
 * @description 验证二叉搜索树 自定义函数（TreeNode，long，long）遍历左子树的时候更新上界（root.val），遍历右子树的时候更新下界（root.val）
 */
public class 二叉搜索树 {
    public boolean isValidBST(TreeNode root) {

        return check(root, Long.MIN_VALUE, Long.MAX_VALUE);

    }
    public boolean check(TreeNode root, long lower, long higher){
        if (root == null) {
            return true;
        }

        if(lower>=root.val||root.val>=higher){
            return false;
        }

        return check(root.left,lower,root.val)&&check(root.right,root.val,higher);
    }
    public static void main(String[] args) {
        // 测试代码
        TreeNode root = new TreeNode(2);
        root.left = new TreeNode(1);
        root.right = new TreeNode(3);

        二叉搜索树 solution = new 二叉搜索树();
        boolean result = solution.isValidBST(root);
        System.out.println(result); // 输出: true
    }
}
